#pragma once
#pragma comment(lib, "shlwapi.lib")
#pragma comment(lib, "propsys.lib")

//
// Win32
// 

#define _WIN32_WINNT  _WIN32_WINNT_VISTA
#define _WIN32_IE     _WIN32_IE_IE70

#define NTDDI_VERSION NTDDI_VISTA

#define NOMINMAX

#define STRICT
#define STRICT_CONST
#define STRICT_TYPED_ITEMIDS

#include <windows.h>

#include <intsafe.h>
#include <propkey.h>
#include <propvarutil.h>
#include <shlobj.h>
#include <shlwapi.h>
#include <shidfact.h>

//
// ATL
//

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS
#define _ATL_NO_PERF_SUPPORT

#include <AtlBase.h>
#include <AtlCom.h>
#include <AtlColl.h>
#include <AtlMem.h>
#include <AtlStr.h>

// StrSafe

#include <tchar.h>
#include <strsafe.h>

//
// STL & Boost
//

#pragma warning(push)
#pragma warning(disable : 4995) // name was marked as #pragma deprecated
#include <boost/range.hpp>
#include <boost/range/atl.hpp>
#include <boost/foreach.hpp>
#pragma warning(pop)

using namespace ATL;